package mybox.junit;

import java.util.ArrayList;

import mybox.engine.File4Qcad;
import mybox.engine.Pfadstueck;
import mybox.engine.QVector;
import mybox.engine.RandLinieOO;
import mybox.engine.ReferenceIOutput;
import mybox.engine.Schachtel;
import junit.framework.TestCase;

public class TetrisTC extends TestCase {
	
	public void test_RandlinieOO3() throws Exception {	
		File4Qcad file4qcad = new File4Qcad(ReferenceIOutput.testoutputFile());		
		QVector aktPos = new QVector(0,0);
		
		double laenge=35;	
		double materialDicke=4;	
		double zinkungsFaktor=1;
		double laserBreite=1;
		//double laserBreite=0.03;
		double phi = 0;//java.lang.Math.PI/2;
		
		boolean isGlatt=false;
		boolean isRand=true;
		boolean isFemale=true;
		boolean hasRandVerkuerzt=false;	
		
		String[] umriss = {"O","N","O"};
					
		
		ArrayList<Pfadstueck> umrissPfad = Pfadstueck.calcPfad(umriss); 
		
		double aktLaenge=laenge;
		for (int randIdx=0;randIdx<umrissPfad.size();randIdx++) {
			
				aktLaenge=umrissPfad.get(randIdx).wiederholung*laenge;	
				phi=Pfadstueck.angle(umrissPfad.get(randIdx).orientierung);		
				
				RandLinieOO randTemp=null;				
					randTemp = new RandLinieOO(file4qcad,aktPos, phi, aktLaenge, materialDicke,zinkungsFaktor,laserBreite,isGlatt,isRand,isFemale,hasRandVerkuerzt);			
					
				randTemp.draw();
				aktPos=randTemp.endPos;	
				aktLaenge=laenge;
				
		}
			
	    file4qcad.close();
		
	}
	
	public void test_Pyramide() throws Exception {	
		File4Qcad file4qcad = new File4Qcad(ReferenceIOutput.testoutputFile());		
		QVector aktPos = new QVector(0,0);
		
		double laenge=35;	
		double materialDicke=4;	
		double zinkungsFaktor=1;
		double laserBreite=1;		
		double phi = 0;
		
		boolean isGlatt=false;
		boolean isRand=true;
		boolean isFemale=true;
		boolean hasRandVerkuerzt=false;	
		
		double tiefe=50;
		
		double dummyHoehe=20;
		
		ArrayList<Pfadstueck> umrissPfad = Pfadstueck.calcPfad(Pfadstueck.PYRAMIDE); 
		
		double aktLaenge=laenge;
		for (int randIdx=0;randIdx<umrissPfad.size();randIdx++) {
			
				aktLaenge=umrissPfad.get(randIdx).wiederholung*laenge;	
				phi=Pfadstueck.angle(umrissPfad.get(randIdx).orientierung);		
				
				RandLinieOO randGP=null;				
					randGP = new RandLinieOO(file4qcad,aktPos, phi, aktLaenge, materialDicke,zinkungsFaktor,laserBreite,isGlatt,isRand,isFemale,hasRandVerkuerzt);			
					
				randGP.draw();
				
				
				if (umrissPfad.get(randIdx).orientierung.equalsIgnoreCase("O")) {
					QVector platteAktPos=new QVector(aktPos);				
					Schachtel seitenPlatteSchachtel = new Schachtel(
								file4qcad, 
								platteAktPos,
								aktLaenge,
								dummyHoehe,
								tiefe,
								materialDicke,
								zinkungsFaktor,
								laserBreite, 
								Schachtel.isLade
						 	  );
					seitenPlatteSchachtel.laengenPlatte1.draw();		
				} else if (umrissPfad.get(randIdx).orientierung.equalsIgnoreCase("W")) {
					QVector platteAktPos=new QVector(aktPos);
					platteAktPos.y+=2*tiefe;
					platteAktPos.x-=laenge;
					Schachtel seitenPlatteSchachtel = new Schachtel(
								file4qcad, 
								platteAktPos,
								aktLaenge,
								dummyHoehe,
								tiefe,
								materialDicke,
								zinkungsFaktor,
								laserBreite, 
								Schachtel.isLade
						 	  );
					seitenPlatteSchachtel.laengenPlatte1.draw();	
					
				}
				
				aktPos=randGP.endPos;	
				aktLaenge=laenge;
				
		}
			
	    file4qcad.close();
		
	}
	

}
